Ví dụ Dò_tia_(đồ_họa)

Như một chứng minh của các nguyên lý được bao hàm trong phương pháp dò tia, ta hãy xem xét làm thế nào một CM tìm được giao điểm giữa tia và một mặt cầu. Trong phép biểu diễn vectơ, phương trình mô tả mặt cầu với tâm c {\displaystyle \mathbf {c} } và bán kính r {\displaystyle \mathbf {r} } là

‖ x − c ‖ 2 = r 2 . {\displaystyle \left\Vert \mathbf {x} -\mathbf {c} \right\Vert ^{2}=r^{2}.}

Bất kỳ điểm nào trên tia xuất phát từ điểm s {\displaystyle \mathbf {s} } theo phương d {\displaystyle \mathbf {d} } (ở đây d {\displaystyle \mathbf {d} } là một vectơ đơn vị) có thể được viết dưới dạng

x = s + t d , {\displaystyle \mathbf {x} =\mathbf {s} +t\mathbf {d} ,}

trong đó t {\displaystyle t} là khoảng cách giữa x {\displaystyle \mathbf {x} } và s {\displaystyle \mathbf {s} } . Trong bài toán của chúng ta, ta biết c {\displaystyle \mathbf {c} } , r {\displaystyle \mathbf {r} } , s {\displaystyle \mathbf {s} } (VD: vị trí của một nguồn sáng) và d {\displaystyle \mathbf {d} } , và ta cần tìm t {\displaystyle t} . Cho nên, thế x {\displaystyle \mathbf {x} } vào phương trình mặt cầu ở trên ta có:

‖ s + t d − c ‖ 2 = r 2 . {\displaystyle \left\Vert \mathbf {s} +t\mathbf {d} -\mathbf {c} \right\Vert ^{2}=r^{2}.}

Ta v   = d e f   s − c {\displaystyle \mathbf {v} \ {\stackrel {\mathrm {def} }{=}}\ \mathbf {s} -\mathbf {c} } cho đơn giản hóa; ta được

‖ v + t d ‖ 2 = r 2 {\displaystyle \left\Vert \mathbf {v} +t\mathbf {d} \right\Vert ^{2}=r^{2}} v 2 + t 2 d 2 + 2 v ⋅ t d = r 2 {\displaystyle \mathbf {v} ^{2}+t^{2}\mathbf {d} ^{2}+2\mathbf {v} \cdot t\mathbf {d} =r^{2}} ( d 2 ) t 2 + ( 2 v ⋅ d ) t + ( v 2 − r 2 ) = 0. {\displaystyle (\mathbf {d} ^{2})t^{2}+(2\mathbf {v} \cdot \mathbf {d} )t+(\mathbf {v} ^{2}-r^{2})=0.}

Biết được d là một vectơ đơn vị cho phép ta sử dụng dạng giản hóa dưới:

t 2 + ( 2 v ⋅ d ) t + ( v 2 − r 2 ) = 0. {\displaystyle t^{2}+(2\mathbf {v} \cdot \mathbf {d} )t+(\mathbf {v} ^{2}-r^{2})=0.}

Phương trình bậc hai này có các nghiệm sau:

t = − ( 2 v ⋅ d ) ± ( 2 v ⋅ d ) 2 − 4 ( v 2 − r 2 ) 2 = − ( v ⋅ d ) ± ( v ⋅ d ) 2 − ( v 2 − r 2 ) . {\displaystyle t={\frac {-(2\mathbf {v} \cdot \mathbf {d} )\pm {\sqrt {(2\mathbf {v} \cdot \mathbf {d} )^{2}-4(\mathbf {v} ^{2}-r^{2})}}}{2}}=-(\mathbf {v} \cdot \mathbf {d} )\pm {\sqrt {(\mathbf {v} \cdot \mathbf {d} )^{2}-(\mathbf {v} ^{2}-r^{2})}}.}

Hai giá trị của t {\displaystyle t} tìm thấy sau khi giải phương trình này là hai thành phần mà s + t d {\displaystyle \mathbf {\mathbf {s} } +t\mathbf {d} } là các điểm nơi tia giao cắt mặt cầu.

Nếu một (hoặc cả hai) trong số chúng có giá trị âm, thì các giao điểm không nằm trên tia mà trên nửa đường thẳng đối nghịch (VD: một tia bắt đầu từ s {\displaystyle \mathbf {s} } với hướng ngược lại), còn nếu biệt thức mang giá trị âm, thì tia không giao cắt với mặt cầu. Thực nghiệm t phải lớn hơn 0 một chút gì vấn đề tròn số khi tính nghiệm.

Vấn đề tròn số khi áp dụng công thúc trực tiếp và chỉ yêu cầu t ≥ 0, tạo nhiều huyên náo (trái). Để giải vấn đề này yêu cầu t lớn hơn một số nhỏ như t ≥ 0.1 (phải)

Ta giả sử còn ít nhất một giải pháp tích cực, và coi t {\displaystyle t} là phần tử tối thiểu. Thêm vào đó, ta giả sử mặt cầu là đối tượng gần nhất trong cảnh của chúng ta giao cắt các tia, điều đó làm nên vật liệu phản xạ. Ta cần tìm trong phương nào tia sáng bị phản xạ. Định luật về phản xạ cho biết góc tới bằng góc phản xạ, tia tới đối xứng với tia phản xạ qua pháp tuyến bề mặt của mặt cầu.

Pháp tuyến tới mặt cầu được cho bởi PT:

n = y − c ‖ y − c ‖ , {\displaystyle \mathbf {n} ={\frac {\mathbf {y} -\mathbf {c} }{\left\Vert \mathbf {y} -\mathbf {c} \right\Vert }},}

với y = s + t d {\displaystyle \mathbf {y} =\mathbf {s} +t\mathbf {d} } là giao điểm đã tìm thấy trước đó. Hướng phản xạ có thể tìm thấy bằng một phép đối xứng của d {\displaystyle \mathbf {d} } với pháp tuyến n {\displaystyle \mathbf {n} } , là

r = d − 2 ( n ⋅ d ) n . {\displaystyle \mathbf {r} =\mathbf {d} -2(\mathbf {n} \cdot \mathbf {d} )\mathbf {n} .}

Vì thế tia phản xạ được biểu diễn bằng PT:

x = y + t r . {\displaystyle \mathbf {x} =\mathbf {y} +t\mathbf {r} .\,}

Giờ chúng ta chỉ cần tính toán giao điểm của tia sau cùng với trường nhìn, để có được điểm ảnh mà tia sáng phản xạ của chúng ta sẽ chiếu tới. Cuối cùng, điểm ảnh này được đặt một màu sắc gần đúng, tính cả ảnh hưởng từ màu của nguồn sáng nguyên thủy cũng như màu sắc của mặt cầu có liên quan trong quá trình phản xạ các tia.

Đây đơn thuần là nội dung toán học liên quan đến giao điểm của đường thẳng với mặt cầu và sự xác định tiếp sau đó màu sắc của điểm ảnh được tính toán. Tất nhiên là còn xa mới mô tả đầy đủ tiến trình dò tia, nhưng chứng minh này được coi là ví dụ cho giải thuật này.

Phần mềm